﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace AstoriaPlus
{
	/// <summary>
	/// Helper interface used to hide the base <see cref="Object"/> 
	/// members from interfaces to make for cleaner Visual Studio intellisense 
	/// on fluent or marker interfaces.
	/// </summary>
	/// <devdoc>
	/// Applying this interface to any type hides the object members. 
	/// Typically used on interfaces rather than objects. 
	/// The EditorBrowsable attribute applied to all members 
	/// hides not only members but also this interface type 
	/// altogether from intellisense.
	/// </devdoc>
	[EditorBrowsable(EditorBrowsableState.Never)]
	public interface IFluentInterface
	{
		/// <summary/>
		Type GetType();

		/// <summary/>
		[EditorBrowsable(EditorBrowsableState.Never)]
		int GetHashCode();

		/// <summary/>
		[EditorBrowsable(EditorBrowsableState.Never)]
		string ToString();

		/// <summary/>
		[EditorBrowsable(EditorBrowsableState.Never)]
		bool Equals(object other);
	}
}
